// #include<iostream>
// #include<cstdio>
// #include<cstring>
// using namespace std;
// const int maxn = 10009;
// int n;
// bool A[maxn],B[maxn];
// int main(){
// 	scanf("%d",&n);
// 	char ch;
// 	for(int i=1;i<=n;++i){
// 		cin>>ch;A[i]=ch=='B'?0:1;
// 	}
// 	int mincnt=0x7fffffff,anslen;
// 	for(int len=1;len<=n;++len){
// 		memset(B,0,sizeof B);
// 		bool b=0,flag=1;int cnt=0;//flag记录当前长度是否有解
// 		for(int i=1;i<=n;++i){//因为区间翻转只有状态0和1，所以用^代替+和-
// 			b^=B[i];//数组B为记录差分的数组
// 			if(!(A[i]^b)){//若当前位置为0
// 				if(i+len-1>n){flag=0;break;}//唯一的失败条件：一次翻转的长度大于剩余的长度
// 				b^=1,B[i+len]^=1;
// 				++cnt;
// 			}
// 		}
// 		if(flag){if(cnt<mincnt)mincnt=cnt,anslen=len;}
// 	}printf("%d %d\n",anslen, mincnt);
// } 

#include <cstring>
#include <iostream>
using namespace std;
const int N = 10009;
bool A[N], B[N];
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) {
        char c;
        cin >> c;
        A[i] = c == 'B' ? 0 : 1;
    }
    int MIN = 0x3f3f3f3f, len;
    for(int i = 1; i <= n; i++) {
        memset(B, 0, sizeof(B));
        bool b = 0, flag = 1;
        int cnt = 0;
        for(int j = 1; j <= n; j++) {
            b ^= B[j]; // 记录的是有没有翻转
            if(!(A[j] ^ b)) { // 翻转（也可能没有）后还是向后面
                if(j + i - 1 > n) { // 要翻转的超出了范围了
                    flag = 0;
                    break;
                }
                b ^= 1; // 表示的是要翻转了
                B[j + i] ^= 1; // 消除后面的翻转影响，正好和1抵消
                cnt++;
            }
        }
        if(flag) {
            if(cnt < MIN) {
                MIN = cnt;
                len = i;
            }
        }
    }
    
    cout << len << " " << MIN << endl;
    return 0;
}